// (func) => (func(func))

let x = (function(func, x) {
    return func(func, x)
})(function(func, n) {
    if (n === 1) {
        return 1
    } else {
        return n * func(func, n-1)
    }
}, 4);

console.dir(x);